/*

Miranda IM: the free IM client for Microsoft* Windows*

Copyright 2000-2007 Miranda ICQ/IM project, 
all portions of this codebase are copyrighted to the people 
listed in contributors.txt.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
aLONG with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

*/
#ifndef _UINFOEX_ICONS_H_INCLUDED_
#define _UINFOEX_ICONS_H_INCLUDED_ 1

#include "m_icolib.h"

namespace NIcoLib {

// sections
#define SECT_COMMON				_T("UserInfoEx")
#define SECT_DLG				_T("UserInfoEx/Dialogs")
#define SECT_BUTTONS			_T("UserInfoEx/Buttons")
#define SECT_TREE				_T("UserInfoEx/TreeView")
#define SECT_REMIND				_T("UserInfoEx/Reminder")

// icons
#define ICO_COMMON_IM			MODNAME"_common_im"
#define ICO_COMMON_FEMALE		MODNAME"_common_female"
#define ICO_COMMON_MALE			MODNAME"_common_male"
#define ICO_COMMON_BIRTHDAY		MODNAME"_common_birthday"
#define ICO_COMMON_ANNIVERSARY	MODNAME"_common_anniversary"
#define ICO_COMMON_CLOCK		MODNAME"_common_clock"
#define ICO_COMMON_MARITAL		MODNAME"_common_marital"
#define ICO_COMMON_PASSWORD		MODNAME"_common_password"
#define ICO_COMMON_ADDRESS		MODNAME"_common_address"
#define ICO_DLG_DETAILS			MODNAME"_dlg_details"
#define ICO_DLG_PHONE			MODNAME"_dlg_phone"
#define ICO_DLG_EMAIL			MODNAME"_dlg_email"
#define ICO_DLG_EXPORT			MODNAME"_dlg_export"
#define ICO_DLG_IMPORT			MODNAME"_dlg_import"
#define ICO_DLG_ANNIVERSARY		MODNAME"_dlg_anniversary"
#define ICO_DLG_SEARCH			MODNAME"_dlg_search"
#define ICO_LST_MODULES			MODNAME"_lst_modules"
#define ICO_LST_FOLDER			MODNAME"_lst_folder"
#define ICO_BTN_UPDATE			MODNAME"_btn_update"
#define ICO_BTN_OK				MODNAME"_btn_ok"
#define ICO_BTN_CANCEL			MODNAME"_btn_cancel"
#define ICO_BTN_APPLY			MODNAME"_btn_apply"
#define ICO_BTN_GOTO			MODNAME"_btn_goto"
#define ICO_BTN_ADD				MODNAME"_btn_add"
#define ICO_BTN_EDIT			MODNAME"_btn_edit"
#define ICO_BTN_DELETE			MODNAME"_btn_delete"
#define ICO_BTN_IMPORT			MODNAME"_btn_import"
#define ICO_BTN_EXPORT			MODNAME"_btn_export"
#define ICO_BTN_NOTES			MODNAME"_btn_notes"
#define ICO_BTN_ABOUT			MODNAME"_btn_about"
#define ICO_BTN_PROFILE			MODNAME"_btn_profile"
#define ICO_BTN_DOWNARROW		MODNAME"_btn_downarrow"
#define ICO_BTN_PHONE			MODNAME"_btn_phone"
#define ICO_BTN_FAX				MODNAME"_btn_fax"
#define ICO_BTN_CELLULAR		MODNAME"_btn_cellular"
#define ICO_BTN_CUSTOMPHONE		MODNAME"_btn_customphone"
#define ICO_BTN_EMAIL			MODNAME"_btn_email"
#define ICO_BTN_SEARCH			MODNAME"_btn_search"
#define ICO_BTN_EXIMPORT		MODNAME"_btn_eximport"
#define ICO_BTN_BDAY_BACKUP		MODNAME"_btn_bdaybackup"
#define ICO_ZOD_AQUARIUS		MODNAME"_zod_aquarius"
#define ICO_ZOD_ARIES			MODNAME"_zod_aries"
#define ICO_ZOD_CANCER			MODNAME"_zod_cancer"
#define ICO_ZOD_CAPRICORN		MODNAME"_zod_capricorn"
#define ICO_ZOD_GEMINI			MODNAME"_zod_gemini"
#define ICO_ZOD_LEO				MODNAME"_zod_leo"
#define ICO_ZOD_LIBRA			MODNAME"_zod_libra"
#define ICO_ZOD_PISCES			MODNAME"_zod_pisces"
#define ICO_ZOD_SAGITTARIUS		MODNAME"_zod_sagittarius"
#define ICO_ZOD_SCORPIO			MODNAME"_zod_scorpio"
#define ICO_ZOD_TAURUS			MODNAME"_zod_taurus"
#define ICO_ZOD_VIRGO			MODNAME"_zod_virgo"

#define ICO_RMD_DTB0			MODNAME"_rmd_dtb0"
#define ICO_RMD_DTB1			MODNAME"_rmd_dtb1"
#define ICO_RMD_DTB2			MODNAME"_rmd_dtb2"
#define ICO_RMD_DTB3			MODNAME"_rmd_dtb3"
#define ICO_RMD_DTB4			MODNAME"_rmd_dtb4"
#define ICO_RMD_DTB5			MODNAME"_rmd_dtb5"
#define ICO_RMD_DTB6			MODNAME"_rmd_dtb6"
#define ICO_RMD_DTB7			MODNAME"_rmd_dtb7"
#define ICO_RMD_DTB8			MODNAME"_rmd_dtb8"
#define ICO_RMD_DTB9			MODNAME"_rmd_dtb9"
#define ICO_RMD_DTBX			MODNAME"_rmd_dtbx"

#define ICO_RMD_DTA0			MODNAME"_rmd_dta0"
#define ICO_RMD_DTA1			MODNAME"_rmd_dta1"
#define ICO_RMD_DTA2			MODNAME"_rmd_dta2"
#define ICO_RMD_DTA3			MODNAME"_rmd_dta3"
#define ICO_RMD_DTA4			MODNAME"_rmd_dta4"
#define ICO_RMD_DTA5			MODNAME"_rmd_dta5"
#define ICO_RMD_DTA6			MODNAME"_rmd_dta6"
#define ICO_RMD_DTA7			MODNAME"_rmd_dta7"
#define ICO_RMD_DTA8			MODNAME"_rmd_dta8"
#define ICO_RMD_DTA9			MODNAME"_rmd_dta9"
#define ICO_RMD_DTAX			MODNAME"_rmd_dtax"

#define ICO_EMPTY				"icolib_emptyIcon"

#define SET_ICONS_CHECKFILEVERSION	"CheckIconPackVersion"
#define SET_ICONS_BUTTONS			"ButtonIcons"

#define ICONINDEX(id)	((id)-IDI_FIRST_ICON)

typedef struct TIconCtrl {
	LPCSTR	pszIcon;
	UINT	Message;
	WORD	idCtrl;
} ICONCTRL, *LPICONCTRL;

extern HICON	hEmptyIcon;
extern HMODULE	hIconDll;

VOID		LoadModule();
HICON		GetIcon(LPCSTR pszIcon, INT idIcon = 0, WORD cx = 0, WORD cy = 0);

HMODULE		LoadIconPack(LPSTR pszAbsoluteFileName);
BOOLEAN		GetDefaultIconFileName(LPSTR pszAbsoluteFileName);
HMODULE		GetDefaultIconFile(LPSTR szFileName);
VOID		SetCtrlIcons(HWND hDlg, const ICONCTRL* pCtrl, BYTE numCtrls);

static __inline VOID AddIcon(SKINICONDESC *lpsid)
{
	CallService(MS_SKIN2_ADDICON, NULL, (LPARAM)lpsid);
}

static __inline VOID CloseLibrary() 
{
	FreeLibrary(hIconDll);
}


} // namespace NIcoLib
#endif /* _UINFOEX_ICONS_H_INCLUDED_ */